草庐IT

c++ - 现有 C++ 项目的 Qt UI

我已经编写了一个C++程序,我想为它编写一个GUI。我意识到Qt是一个很棒的工具,但是,Qt有自己的类,这让我很困惑。例如:Qt有一个名为QString的类,而不是String。我想知道是否可以在C++中混合使用C++代码和Qt代码? 最佳答案 是的,您可以非常轻松地混合使用Qt和STL。GUI采用QString,但会以std::string或char*、QString的形式静默创建这些>从Qt返回的数据可以用toStdString()或toAscii()转换。Qt包含一组集合类,但您不必使用它们。Qt在看起来像现代C++方面做得很

c++ - Qt - 序列化 "double"时出现问题

我序列化“double”数据类型并得到一个错误QDataStream&operator运算符已定义。这是错误消息:error:conversionfrom'double'to'constQChar'isambiguous您遇到过这种情况,或者理解为什么会变成这样吗? 最佳答案 听起来它看不到double的运算符,因此它试图从double隐式创建一个QChar以发送到流,但是QChar有可能匹配的多个构造函数。确保您的header包含的内容都是正确的。你能告诉我们你试图序列化替身的代码吗?

C++ Qt 写入 unix 套接字

我在/tmp/my_sock中有一个unix套接字如何连接到它并写入数据?有Qt方法吗? 最佳答案 Qt通过QLocalSocket和QLocalServer原生支持unix域套接字。您必须作为第一个参数传递给QLocalSocket::connectToServer的名称是套接字路径:"/tmp/my_sock"。 关于C++Qt写入unix套接字,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

c++ - 在 Qt 应用程序中诊断段错误时遇到问题

我有一个使用QtWebKit的应用程序。它加载URL并在渲染树上导出一些统计信息。这部分代码引起了问题:...if(mPage!=0){disconnectSignals(mPage);deletemPage;}mPage=newPage();//subclassofQWebPageconnectSignals(mPage);QNetworkRequestreq;req.setUrl("http://...");mPage->mainFrame()->load(req,QNetworkAccessManager::GetOperation);上面的代码第一次运行mPage=0时,页面加

c++ - 增加Qt中文本和复选框之间的空间

如果您设置固定的复选框大小,文本将与复选框本身对齐。对于标准布局方向,文本将在框之后开始,而对于从右到左布局,文本将在框之前结束,就像这样(边框只是小部件的边框指示小部件的实际大小,不要混淆):有没有办法将文本对齐到另一边来实现这一点: 最佳答案 正如您提到的,您有一个固定大小的QCheckBox。如此轻松,无需子类化,您就可以使用样式表获得您想要的QCheckBox。但不幸的是,text-align属性只适用于QPushButton和QProgressBar。但是您可以使用的备用样式表是:QCheckBox{spacing:100

c++ - Qt 信号/插槽示例的链接器错误

我有一个包含多个使用信号和槽的类的Qt应用程序,它编译得很好。但是,当我在主CPP(main.cpp)文件中创建自定义类时,出现链接器错误。这是我使用的代码:classCounter:publicQObject{Q_OBJECTpublic:Counter(){m_value=0;}intvalue()const{returnm_value;}publicslots:voidsetValue(intvalue){if(value!=m_value){m_value=value;qDebug()错误如下:Error4errorLNK2001:unresolvedexternalsymbo

c++ - 无法理解 Qt 中的撤消重做框架

我正在学习使用Qt进行我的应用程序开发,并且我在开发我的应用程序方面相当成功。现在我想为我的应用程序实现撤消重做功能。doc对于这个主题的信息很少。我什至尝试从SDK中的2个示例中理解。但是我很难理解它是如何工作的。有人可以不厌其烦地向我解释如何实现吗?我的应用程序中有多种状态,我想为其提供此功能。那么能不能从一般的角度来解释呢?如果互联网上已经有文章解释相同的内容,请通知我。那将非常有帮助。谢谢。 最佳答案 有2个核心类:QUndoCommand和QUndoStack;QUndoCommand是您的命令类的基类。您必须自己实现un

c++ - 尝试编译qt项目时编译错误

我正在尝试编译我的Qt项目,它在Linux机器上编译得很好,但是在我的Mac上我收到以下错误:../../Qt5.0.1/5.0.1/clang_64/include/QtCore/qlist.h:52:10:fatalerror:'initializer_list'filenotfound#include^知道如何解决这个问题吗? 最佳答案 这是mac尝试使用64位clang编译器编译Qt5.0+项目时的一个已知错误。为了解决此冲突,请尝试this中列出的步骤错误修复论坛帖子:1)克隆桌面Qt5.0.0clang64位(SDK)工

c++ - Qt: c++: 如何使用 QStringList 填充 QComboBox

我正在尝试使用insertItems函数将项目添加到QComboBox,如下所示:QStringListsequence_len=(QStringList()QComboBox->insertItem(0,&sequence_len);但不工作,给我以下错误信息:error:nomatchingfunctionforcallto'QComboBox::insertItem(int,QStringList*)'实际上,当我在我的类中编写ui->QComboBox->insertItem(以查看Qt-Creator的建议时,选项:(intindex,constQStringList&lis

c++ - Qt:字段类型不完整

无法编译我的类。获取错误:错误:字段“文件名”的类型不完整如果我将QStringfilename更改为QString*filename,错误就会消失。但我需要有QStringfilename。进程.h:#ifndefPROCESS_H#definePROCESS_H#includeclassProcess{public:intpid;QStringfilename;Process(intpid,QStringfilename);};#endif//PROCESS_H进程.cpp:#include"process.h"Process::Process(intpid,QStringfile